package common.bean;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
public class OuterClass {

    private Integer age;

    /**
     * 外部类必选先实例化内部类,在使用内部类
     */
    public void printInner() {
        InnerClass inner = new InnerClass(36);
        System.out.println("inner.age = " + inner.age);

        inner.printOuter();
    }

    @Data
    @AllArgsConstructor
    public class InnerClass {
        private Integer age;

        /**
         * 内部类可以直接使用外部类
         */
        public void printOuter() {
            System.out.println(OuterClass.this.age);
        }
    }

    // 静态内部类
    @Data
    public static class StaticInnerClass {
        // 内部类的成员变量和方法
        private int innerField;

        public void innerMethod() {
            System.out.println(innerField);
        }
    }

}
